//
//  ViewController.swift
//  UseClosure
//
//  Created by liy on 2024/12/19.
//

import UIKit

class ViewController: UIViewController {
  var tools: HttpTool = HttpTool()

  override func viewDidLoad() {
    super.viewDidLoad()
  }

  override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    // __weak 修饰的弱引用，如果指向的对象销毁，指针立马指向nil(0x0)
    // __unsafe_unretained修饰的弱引用，如果指向的对象销毁，指针依然指向原来的内存地址,很容易产生‘野指针’僵尸对象
    // 循环引用解决1：
//    weak var weakSelf = self
//    tools.loadData { jsonData in
//      print("拿到数据： \(jsonData)")
//      weakSelf?.view.backgroundColor = .red
//    }

    // 方案2：（推荐）是方案1的简便写法
    tools.loadData { [weak self] jsonData in
      print("拿到数据： \(jsonData)")
      self?.view.backgroundColor = .red
    }

    // 方案3：__unsafe_unretained 前提必须保证使用时self没被销毁
    //		tools.loadData { [unowned self] jsonData in
    //			print("拿到数据： \(jsonData)")
    //			self.view.backgroundColor = .red
    //		}
  }

  deinit {
    print("---ViewController销毁")
  }
}
